package com.xiaomai.geek.ui.module.articel;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.webkit.DownloadListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.xiaomai.geek.R;
import com.xiaomai.geek.ui.base.BaseLoadActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by XiaoMai on 2017/5/16.
*/
public class BaseWebViewActivity extends BaseLoadActivity {
public static final String EXTRA_URL = "extra_url";
@BindView(R.id.tool_bar)
Toolbar toolBar;
@BindView(R.id.webView)
WebView webView;
@BindView(R.id.nestedScrollView)
NestedScrollView nestedScrollView;
public static void launch(Context context, String url) {
Intent intent = new Intent(context, BaseWebViewActivity.class);
intent.putExtra(EXTRA_URL, url);
context.startActivity(intent);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_article_detail);
ButterKnife.bind(this);
initViews();
initWebViewSettings();
initWebViewClient();
}
protected void initViews() {
Intent intent = getIntent();
String url = intent.getStringExtra(EXTRA_URL);
toolBar.setTitle(url);
setSupportActionBar(toolBar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
webView.loadUrl(url);
}
protected void initWebViewClient() {
WebViewClient webViewClient = new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
showLoading();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
dismissLoading();
}
};
// 如果用户设置了WebViewClient,则在点击新的链接以后就不会跳转到系统浏览器了,而是在本WebView中显示。
webView.setWebViewClient(webViewClient);
}
@SuppressLint("SetJavaScriptEnabled")
protected void initWebViewSettings() {
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// WebView中含有可以下载文件的链接,点击该链接后,应该开始执行下载的操作并保存文件到本地中。
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
if (webView.canGoBack())
webView.goBack();
else
finish();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}